@echo off
title 物业保洁系统 - Windows环境检查
color 0A
echo.
echo ╔══════════════════════════════════════════════════════════════╗
echo ║                  Windows环境检查工具                         ║
echo ║              物业保洁系统部署前检查                          ║
echo ╚══════════════════════════════════════════════════════════════╝
echo.
echo 正在检查系统环境...
echo ================================================
echo.

REM 系统信息
echo 📊 系统信息：
echo ----------------
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
echo.

REM 检查管理员权限
echo 🔐 权限检查：
echo ----------------
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo ❌ 当前用户无管理员权限
    echo ⚠️  请以管理员身份运行此脚本
) else (
    echo ✅ 管理员权限已获取
)
echo.

REM 检查Git
echo 🔧 Git检查：
echo ----------------
git --version >nul 2>&1
if %errorLevel% neq 0 (
    echo ❌ Git未安装
    echo 💡 建议: 运行 install-all-windows.bat 或手动安装
    echo 📥 下载: https://git-scm.com/download/win
) else (
    echo ✅ Git版本: 
    git --version
)
echo.

REM 检查Docker
echo 🐳 Docker检查：
echo ----------------
docker --version >nul 2>&1
if %errorLevel% neq 0 (
    echo ❌ Docker未安装
    echo 💡 建议: 运行 install-all-windows.bat 或手动安装
    echo 📥 下载: https://www.docker.com/products/docker-desktop/
) else (
    echo ✅ Docker版本: 
    docker --version
    
    REM 检查Docker服务状态
    docker info >nul 2>&1
    if %errorLevel% neq 0 (
        echo ⚠️  Docker已安装但服务未运行
        echo 💡 建议: 启动Docker Desktop
    ) else (
        echo ✅ Docker服务运行正常
    )
)
echo.

REM 检查Java
echo ☕ Java检查：
echo ----------------
java -version >nul 2>&1
if %errorLevel% neq 0 (
    echo ❌ Java未安装
    echo 💡 建议: 运行 install-all-windows.bat 或手动安装
    echo 📥 下载: https://adoptium.net/
) else (
    echo ✅ Java版本: 
    java -version
)
echo.

REM 检查Node.js
echo 🟢 Node.js检查：
echo ----------------
node --version >nul 2>&1
if %errorLevel% neq 0 (
    echo ❌ Node.js未安装
    echo 💡 建议: 运行 install-all-windows.bat 或手动安装
    echo 📥 下载: https://nodejs.org/
) else (
    echo ✅ Node.js版本: 
    node --version
    
    REM 检查npm
    npm --version >nul 2>&1
    if %errorLevel% neq 0 (
        echo ⚠️  npm未安装
    ) else (
        echo ✅ npm版本: 
        npm --version
    )
)
echo.

REM 检查端口占用
echo 🚪 端口检查：
echo ----------------
echo 检查常用端口状态...

netstat -ano | findstr :3000 >nul
if %errorLevel% neq 0 (
    echo ✅ 端口3000 (前端) 可用
) else (
    echo ⚠️  端口3000 (前端) 被占用
)

netstat -ano | findstr :8080 >nul
if %errorLevel% neq 0 (
    echo ✅ 端口8080 (后端) 可用
) else (
    echo ⚠️  端口8080 (后端) 被占用
)

netstat -ano | findstr :5432 >nul
if %errorLevel% neq 0 (
    echo ✅ 端口5432 (PostgreSQL) 可用
) else (
    echo ⚠️  端口5432 (PostgreSQL) 被占用
)
echo.

REM 检查系统资源
echo 💾 系统资源：
echo ----------------
echo 检查系统资源...

REM 检查内存
systeminfo | findstr /C:"Total Physical Memory"

REM 检查磁盘空间
echo.
echo 💽 磁盘空间：
for /f "tokens=3" %%a in ('dir C:\ /-c ^| findstr /c:"bytes free"') do set FREESPACE=%%a
echo C盘可用空间: %FREESPACE%
echo.

REM 检查虚拟化支持
echo 🔧 虚拟化检查：
echo ----------------
systeminfo | findstr /C:"Hyper-V Requirements" >nul
if %errorLevel% neq 0 (
    echo ⚠️  无法检测虚拟化状态
) else (
    systeminfo | findstr /C:"Hyper-V Requirements"
)
echo.

REM 检查WSL2（Docker需要）
echo 🐧 WSL2检查：
echo ----------------
wsl --version >nul 2>&1
if %errorLevel% neq 0 (
    echo ⚠️  WSL2未安装（Docker Desktop需要）
    echo 💡 建议: 安装Docker Desktop时会自动安装WSL2
) else (
    echo ✅ WSL2已安装
)
echo.

REM 检查防火墙
echo 🛡️  防火墙检查：
echo ----------------
netsh advfirewall show allprofiles state | findstr /C:"State" >nul
if %errorLevel% neq 0 (
    echo ⚠️  无法检测防火墙状态
) else (
    echo ✅ Windows防火墙状态:
    netsh advfirewall show allprofiles state | findstr /C:"State"
)
echo.

REM 检查网络连接
echo 🌐 网络检查：
echo ----------------
ping -n 1 google.com >nul 2>&1
if %errorLevel% neq 0 (
    echo ⚠️  网络连接可能有问题
) else (
    echo ✅ 网络连接正常
)
echo.

REM 检查项目文件
echo 📁 项目文件检查：
echo ----------------
set PROJECT_PATH=%~dp0
if exist "%PROJECT_PATH%\docker-compose.yml" (
    echo ✅ docker-compose.yml 文件存在
) else (
    echo ❌ docker-compose.yml 文件不存在
    echo 当前路径: %PROJECT_PATH%
)

if exist "%PROJECT_PATH%\pom.xml" (
    echo ✅ pom.xml 文件存在 (后端项目)
) else (
    echo ⚠️  pom.xml 文件不存在
)

if exist "%PROJECT_PATH%\package.json" (
    echo ✅ package.json 文件存在 (前端项目)
) else (
    echo ⚠️  package.json 文件不存在
)
echo.

REM 最终状态报告
echo ╔══════════════════════════════════════════════════════════════╗
echo ║                        检查结果汇总                        ║
echo ╚══════════════════════════════════════════════════════════════╝
echo.
echo 🎯 建议操作：
echo.

REM 根据检查结果给出建议
set MISSING_TOOLS=0
set READY_TO_DEPLOY=1

if not exist "%PROJECT_PATH%\docker-compose.yml" set READY_TO_DEPLOY=0

REM 检查各项是否就绪
git --version >nul 2>&1 || set MISSING_TOOLS=1
docker --version >nul 2>&1 || set MISSING_TOOLS=1
java -version >nul 2>&1 || set MISSING_TOOLS=1
node --version >nul 2>&1 || set MISSING_TOOLS=1

if %MISSING_TOOLS%==1 (
    echo 🔧 需要安装软件：
    echo   运行 install-all-windows.bat 一键安装所有必要软件
    echo.
)

if %READY_TO_DEPLOY%==1 (
    echo ✅ 系统已就绪，可以开始部署！
    echo   运行 quick-start-windows.bat 启动系统
    echo.
) else (
    echo ⚠️  项目文件不完整，请确保在正确目录
    echo   当前目录: %PROJECT_PATH%
    echo.
)

echo 📞 技术支持：
echo   如遇到问题，请查看 windows-setup-guide.md
pause